<?php
session_start();
require_once '../model/TipoUnidade.php';
class TipoUnidadeDLO {

    private $tipos_unidade;
    private static $tipo_unidadeDLO;

    private function __construct() {
    }

    /**
     * @method tipo_unidadeDLO getInstance() para obter uma única instância do controlador
     * @return TipoUnidadeDLO
     */
    public static function getInstance() {
        if (!isset (self::$tipo_unidadeDLO)) {
            if (!isset ($_SESSION['tipo_unidadeDLO'])) {
                $_SESSION['tipo_unidadeDLO'] = serialize(new TipoUnidadeDLO());
            }
            self::$tipo_unidadeDLO = unserialize($_SESSION['tipo_unidadeDLO']);
        }
        return self::$tipo_unidadeDLO;
    }

    public function cadastrar(&$descricao) {
        $tipo_unidade = new TipoUnidade();
        $tipo_unidade->setDescricao($descricao);
        $tipo_unidade->cadastrar();
    }

    public function listar() {
        $result = &TipoUnidade::listar();
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_tipo_unidade'] = &$result[$i]->getCod_tipo_unidade();
            $row['descricao'] = &$result[$i]->getDescricao();
            $resultado[$i] = &$row;
            unset ($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_tipo_unidade) {
        $tipo_unidade = null;
        if (isset ($this->tipos_unidade[$cod_tipo_unidade])) {
            $tipo_unidade = &$this->tipos_unidade[$cod_tipo_unidade];
        } else {
            $tipo_unidade = &TipoUnidade::consultar($cod_tipo_unidade);
            $this->tipos_unidade[$cod_tipo_unidade] = &$tipo_unidade;
            $_SESSION['tipo_unidadeDLO'] = serialize($this);
        }
        if ($tipo_unidade->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $tipo_unidade->excluir();
        unset ($this->tipos_unidade[$cod_tipo_unidade]);
        $_SESSION['tipo_unidadeDLO'] = serialize($this);
    }

    public function alterar(&$cod_tipo_unidade, &$campo_id, &$campo_valor) {
        $tipo_unidade = null;
        if (isset ($this->tipos_unidade[$cod_tipo_unidade])) {
            $tipo_unidade = &$this->tipos_unidade[$cod_tipo_unidade];
        } else {
            $tipo_unidade = &TipoUnidade::consultar($cod_tipo_unidade);
            $this->tipos_unidade[$cod_tipo_unidade] = &$tipo_unidade;
            $_SESSION['tipo_unidadeDLO'] = serialize($this);
        }
        if ($tipo_unidade->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $tipo_unidade->alterarCampo($campo_id, $campo_valor);
        $this->tipos_unidade[$cod_tipo_unidade] = &$tipo_unidade;
        $_SESSION['tipo_unidadeDLO'] = serialize($this);
    }

    public function consultar(&$cod_tipo_unidade) {
        $tipo_unidade = null;
        if (isset ($this->tipos_unidade[$cod_tipo_unidade])) {
            $tipo_unidade = &$this->tipos_unidade[$cod_tipo_unidade];
        } else {
            $tipo_unidade = &TipoUnidade::consultar($cod_tipo_unidade);
            $this->tipos_unidade[$cod_tipo_unidade] = &$tipo_unidade;
            $_SESSION['tipo_unidadeDLO'] = serialize($this);
        }
        $row = array();
        $row['cod_tipo_unidade'] = &$tipo_unidade->getCod_tipo_unidade();
        $row['descricao'] = &$tipo_unidade->getDescricao();
        $row['vinculado'] = &$tipo_unidade->isVinculado();
        return $row;
    }
}
?>